<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
</head>
<body>
	<input type="button" onclick="disp_alert()" value="Promise测试" />
	<input type="button" onclick="again1()" value="cas测试" />
</body>
</html>
<script type="text/javascript">
	// 	测试Promise

// 	disp_alert1(key,url).then(c->{
// 		//todo 成功后触发
// 		alert("成功了");
// 	},err=>{
// 		//todo error后触发
// 		alert("失败了");
// 	})
	
	function disp_alert() {
		//发起查询请求，记录开始时间
		startTime=new Date();
// 		var def = $.Deferred();
		var def = new Promise(function(resolve, reject){
			again(startTime,resolve, reject);
		});
		def.then(function(data){
			//获取更新数据成功，调用后续的函数进行处理
				alert(data);
	 		},function(data){
	 			//获取更新数据成功，调用后续的函数进行处理
	 			alert("1"+data);
	 	});
		return def;
	}
	function again(startTime,resolve, reject){
			$.ajax({
				url : "http://localhost:8080/zeepos/solr/testselect?q=id_filter_service:*",
				dataType : "jsonp",
				type : 'get',
				data : {
					changeDataKey : "5a54afd7e4b00c1e08713baa"
				},
				success : function(data) {
					alert(data.body.isDataChanged);
					var endTime=new Date();
					//判断是否获取到更新后的数据
					if(data.body.isDataChanged == true){
// 						def.resolve("成功");
						resolve("成功");
					}else{
						//判断时间是否超时
						if(endTime-startTime <= 3000){
							if(data.body.isDataChanged == false){
								alert(endTime-startTime);
								//重新发送请求 ，延迟多久待定？
								setTimeout(function(){
									again(startTime,resolve, reject);
								},50);
							}
						}else{
							reject('查询超时');
						}
					}
				},
				error : function(xhr, error, data) {
					alert(error);
					alert(data);
					alert(xhr.status);
				}
			});
	}
	function again1(){
		alert("11");
		$.ajax({
			url : "http://localhost:8080/zeepos/solr/testselect?q=id_filter_service:*",
			dataType : "jsonp",
			type : 'get',
			data : {
				changeDataKey : "5a54afd7e4b00c1e08713baa"
			},
			success : function(data) {
				alert("22");
				alert(data.url);
				window.location=data.url;
			},
			error : function(xhr, error, data) {
				alert(error);
				alert(data);
				alert(xhr.status);
			}
		});
	}
</script>